`timescale 1ns/1ps

module tb_multi_lia_top;

//--------------------------------------------------------
// 参数定义
//--------------------------------------------------------
parameter CLK_PERIOD = 20; // 50MHz 时钟，周期20ns
parameter integer HALF_TTL_CYCLE = 500_000; // 1000Hz方波半周期，单位是 1ns，所以500_000ns = 0.5ms

//--------------------------------------------------------
// 信号定义
//--------------------------------------------------------
reg sys_clk;
reg rst_n;
reg [9:0] ad_3pa1030_ch;
reg ad_otr;
wire ad_clk_50m;
wire ttl_signal;

wire signed [9:0] ad_wire;
wire signed [9:0] ad_wire_debug;
assign ad_wire_debug = ad_wire * 6 + 400;
//--------------------------------------------------------
// 例化 DUT
//--------------------------------------------------------
multi_lia_top #(
    .datin_width(10)
) u_multi_lia_top(
    .sys_clk(sys_clk),
    .rst_n(rst_n),
    .ad_3pa1030_ch(ad_wire_debug),
    .ad_otr(ad_otr),
    .ad_clk_50m(ad_clk_50m),
    .ttl_signal(ttl_signal),
    .debug_da_sin_signal(ad_wire)
);

//--------------------------------------------------------
// 时钟产生
//--------------------------------------------------------
initial begin
    sys_clk = 0;
    forever #(CLK_PERIOD/2) sys_clk = ~sys_clk;
end

//--------------------------------------------------------
// 复位产生
//--------------------------------------------------------
initial begin
    rst_n = 0;
    #200;
    rst_n = 1;
end

//--------------------------------------------------------
// ad_3pa1030_ch输入方波产生
//--------------------------------------------------------
// initial begin
//     ad_3pa1030_ch = 10'd0;
//     ad_otr = 1'b0; // 一直是0

//     wait(rst_n == 1); // 等待复位完成
//     #1000; // 等待一段时间

//     forever begin
//         ad_3pa1030_ch = 10'd800; // 正相方波高电平（可以根据需要调整幅值）
//         #(HALF_TTL_CYCLE);
//         ad_3pa1030_ch = 10'd0; // 正相方波低电平（避免出现负数）
//         #(HALF_TTL_CYCLE);
//     end
// end

//--------------------------------------------------------
// 仿真超时保护
//--------------------------------------------------------
initial begin
    #500_000_000; // 仿真50ms
    $display("Simulation finished.");
    $stop;
end

endmodule
